Всем привет и сегодня я хочу открыть ещё один подраздел в своём блоге посвящённый моим поделкам —«My games». В этом разделе я планирую размещать различного рода информацию по моим текущим разработкам. На самом деле их немного, и это скорее больше похоже на эксперименты методом проб и ошибок. Но одна, основная моя разработка, самый большой долгострой всё-таки присутствует. Вот о ней мне бы и хотелось сегодня рассказать.
Всё началось в далёком (уже) 2014 году, когда один замечательный человек Helen Allien Poe, в последствии переименовавшаяся в Kiwesomeness подарила мне Steam-ключик «RPG Maker VX Ace», тем самым сделала возможной реализацию моей давней мечты — сделать свою игру.
Не скажу, что сходу было всё так понятно. Особенно когда очень пространственно представляешь, как собственно игра устроена внутри. Но почитав несколько форумов, в том числе зарубежных картина стала более-менее ясна. Благодаря урокам на youtube, от не безызвестного Hellyintar Black (он же Сириус), стало вообще всё просто где чего для чего служит и как это проще и удобнее сделать. А уж когда он начал рассказывать про такую крутую штуку как скрипты, то стало понятно, что по своей сути в rpg maker можно сделать если не всё, то уж по крайней мере очень многое.
Я знаю, что многие недолюбливают Сириуса, но тем не менее я хочу высказать огромную благодарность, ибо благодаря его урокам мне удалось преодолеть тут самую планку («Сложна! Сложна! !@#$%^& непонятно!» © сами знаете кто) и понять, что по сути если разобраться и чётко понимать, что и как ты делаешь, то оказывается не так уж и всё сложно.
Уже несколько позже, нахватавшись азов и во всю используя чужие скрипты, мне стало понятно, что и этого уже мало. Авторы зачастую по-своему видели потребности и задачи, которые решал их скрипт, совершено не заботясь об универсальности. Да чего греха таить, зачастую они даже не удосуживались вынести в начало скрипта настройки тех или иных параметров. Но надо отдать должное, именно благодаря им мне, хоть и нехотя, но пришлось разбираться в премудростях написания скриптов. Именно тогда, меняя что-то чисто интуитивно, или как ещё любят говорить методом научного тыка, у меня получилось добиваться от скриптов желаемого результата. И только уже потом, разобравшись, что все скрипты (для VX Ace) написаны на языке программирования ruby, у меня начало получаться что-то уже своё.
Но вернёмся к моим поделкам. Первая, и, наверное, единственная, серьёзная разработка была, да и сейчас собственно тоже остаётся, это «Приключения Нэки». Как вы уже догадались делалась она изначально на RPG Maker VX Ace с помощью стандартного RTP (набора графики и музыки, которые входят в комплект редактора). Несколько позже были приобретены некоторые DLC и редактор персонажей «Game Character Hub», которые позволили хоть и немного, но разнообразить графику. Надо ещё сказать огромное спасибо за помощь с графикой замечательному человеку @Veelka Belka (она же Veel). Потрясающая заставка, а также аватарки котов в игре именно её рук творения.
Сюжет игры крутится вокруг молодой особы (Нэки, с одноимённым именем Mi) в которая в день своего совершеннолетия получает задание от Богини, выполняя его она оказывается втянута в круговорот событий и невольно становится «очень главным персонажем».
Надо признаться, что во время создания игры меня периодически штормило, с одной стороны мне хотелось сделать адвенчуру, чисто история с приключениями, а с другой хотелось на полную использовать возможности редактора, с боевыми режимами, прокачкой персонажа, предметами итд.
30 сентября 2014 года в узких кругах была выпущена бета-версия «Приключения Нэки: Кошачья деревня». Что бы не затягивать разработку, было принято решение, разбить игру на несколько частей (эпизодов) и собственно «Кошачья деревня» стала отправной точкой. Моя бедная тушка подразумевала, что будут какие-то ляпы, огрехи, недочёты, но что бы так много. Для меня это было некоторым шоком и своеобразным испытанием психики на прочность.
Для сбора отзывов и пожеланий в Google+ была создана закрытая группа с вступлением по запросу. Не смотря на закрытость, желающих помочь с тестированием набралось очень много, если быть точнее, то на последний момент их насчитывалось, а целых двадцать два участника. Ребята с рьяностью принялись за «потрошения» моей поделки и вскоре стало ясно, что от такого количества пожеланий, исправлений форма в виде постов google+ ужасно неудобна. Вскоре, один из самых активных тестировщиков Кирилл Хромов предложил более удобный инструмент для отслеживания исправлений — Trello. Инструмент оказался действительно более универсален. Можно было обсуждать, прикладывать скриншоты, писать об исправлениях, спорить, а самое главное у задачи был статус, можно было перемещать карточку либо в выполнено, либо в отложено, либо, например, в пожелания. Для меня это был новый, очень ценный опыт работы над ошибками в условиях современных технологий.
Одним из камней преткновений были ошибки в тексте, их приходилось скриншотить, выкладывать, а самое главное вспоминать на каком именно ивенте расположен этот текст. Это было жутко неудобно как для самих тестировщиков, так и для меня, так как приходилось выполнять много монотонной работы. Было бы классно выгрузить весь текст из игры, проверить его на ошибки, и загрузить обратно. К моей великой «радости» даже нашелся плагин «Dialogs exporter/importer [VX ACE]», позволяющие всё это сделать.
Да, текст выгрузился на ура, мы проверили вся оставшиеся ляпы и опечатки, и… случилось страшное. При попытке загрузить текст обратно, в плагине что-то пошло не так и вместо текста стали какие-то квадратики, местами куски текста, по событиям что-то «размазалось», а самое печально, что это была единственная свежая копия проекта. Так ещё один момент научил меня, что не стоит доверять 100% чужим плагинам и всегда надо делать резервную копию. Сказать, что у меня опустились лапы и пропало желание что-либо вообще делать, не сказать ничего. Похожее состояние у меня было только когда мы всем кланом в Линейке собирали кучу ресурсов, 40 миллионов аден на крафт лука и в результате ознаменовала надпись — создание предмета не удалось. Не было не воплей, не возмущений, просто тишина, безразличие и полное отсутствие желания что-либо делать.
Спустя пару дней обнаружилась достаточно старая копия, пришлось всё (практически с нуля) доделывать. Зато с тех пор у меня было строгая практика, закрываем RPG Maker и проект сразу архивируем — название + дата создания. В будущем это не раз помогло, когда случайно или преднамеренно что-то менялось и невозможно было понять, что пошло не так, это сильно пригодилось. Можно был пройтись буквально по дням и найти тот момент, когда это случилось.
Постепенно проект обрастал деталями, появилась новая графика, новые карты, но больше всего меня конечно тянуло к экспериментам и посему в игре появлялось всё больше и больше новых скриптов порой меняющих игру до неузнаваемости.
Но 19 ноября 2015 года случилось «страшное». Как говорят летописи того времени:
Ну что Котятки, настало время немного поделится новостями проекта. Как говаривал товарищ Огурцов: «Работа конечно проделана большая, но так товарищи дальше дело не пойдёт».
Итак, вдоволь наигравшись наизучавшись новый RPG Maker MV, хочу вам сказать одно — это бомба! Уровень конечно совершенно другой. Можно много и сильно критиковать авторов за различные ляпы, но это вау! Конечно переносить проект очень сложно. Карты и диалоги перенеслись без проблем, а вот с графикой есть некоторые вопросы. Она другая, других размеров и её надо либо адаптировать, либо переделывать. И если для VX Ace графики уже нарисовано просто море и маленькая тележка, то вот для MV её кот наплакал. Тоже самое и со скриптами, их немного, но они появляются, чего стоит скрипт освещения. Я думаю по скриншотам становится ясно за кем будущее.
Ну и по скорости работы конечно это земля и небо. Всё плавно, никаких рывков, я просто не нарадуюсь.
Одно меня тревожит и в третий раз я сажусь перерисовывать всю графику! Божи дай мне сил!
Мда, мне тогда даже и в голову не могло прийти, что проект затянется ТАК надолго. В принципе перенос проекта с VX Ace на MV произошел «почти» безболезненно. Конечно были нюансы, но в целом они все были решаемы. Куда большей проблемой появление второй заветной мечты — попасть в «Steam Greenlight». О дааа! Мечта конечно хорошо, но это означало, что практически всю графику придётся делать свою, музыку использовать либо из DLC, либо договариваться с авторами, даже шрифты пришлось искать с упоминанием «Free for personal or commercial use».
Куда более «проще» обстояло дело с плагинами (так теперь назывались скрипты для редактора RPG Maker MV). Редактор только-только вышел и… барабанная дробь! Их просто не было! Совсем! Пришлось засучив лапы с головой кидаться в новую пучину. Конечно со временем плагины появились и многие из них частично или полностью повторяли функционал одноимённых скриптов с VX Ace, но моё упорство в познании нового уже было не остановить. Так появилось новое увлечение, написание собственных плагинов для RPG Maker MV, теперь уже на JavaScript.
Но переход на MV был не самой большой проблемой, идея с GreenLight’ом оказалась своеобразной планкой, причём планкой задранной очень высокою. Теперь это уже была не просто «поделка для друзей» и участием оных в виде отдельно взятых персонажей, теперь это уже была игра с претензией на оригинальность. И моя бедная головушка загрузилась проработкой персонажей, оригинальностью сюжета, а главное просчётом статов и расчётом баланса. В результате чего меня занесло в такие дебри…
Но на самом деле не всё так печально. Мне всегда не нравилось, что во многих играх авторы подходят к экипировке спустя рукава. Одинаковые иконки, один предмет крутой, остальное откровенный мусор, который только что и годился сбагрить его торговцу. Поэтому была придумана целая схема для размещения различных видов предметов. Помимо стандартных: оружие, щит, голова, тело и аксессуар, были добавлены другие. На лицо можно одеть маску, в уши вставить серьги, на шею повязать шарф, на спину повесить плащ, на руки одевались перчатки, а запястье наручи, так же можно одеть кольцо, повязать пояс, на ноги наконец одеть штаты и обувь. Всего получилось аж двенадцать слотов, что в свою очередь даёт огромный простор для фантазии.
В отличии от старого VX Ace в котором было только несколько ячеек, в MV можно задать неограниченное число типов. Единственный нюанс, это пальцы, к сожалению, предмету нельзя задать, что он может одеваться как на правую руку, так и на левую. Может быть только один тип. Поэтому что бы не городить кучу колец для правого пальца и такую же кучу для левого, есть пальцы и есть запястье. Посмотрев, как предлагают экипироваться в «Diablo 3» и старой доброй «LineAge 2» у меня получилась такая вот схемка:
Зелёные части — основной вид экипировки. Они все делятся на четыре типа: Обычные (могут одевать все) как правило это простая одежда; магические (как ясно из названия могут одевать маги); лёгкая (одевают лучники, рейнжеры итд) и тяжёлая (одевают рыцари итд)
Оранжевые части — аксессуары, ограничений нет, могут одевать все. Исключение желтая часть — кольца, они могут быть как для всех, так и только для магов.
Фиолетовая часть — плащи. Так же, как и кольца они могут быть как для всех так и только для магов.
Голубая часть — пояс. Здесь ограничений так же нет могут одевать все классы.
Ну и последнее, синяя часть — экипировка в левой руке. Изначально (по задумке авторов RPG Maker’а) здесь могут быть только щиты или слот может блокироваться если используется двуручное оружие. У меня пошла мысль дальше, а почему бы не сделать несколько видов? Например, в левую руку можно взять фонарь или факел, магу можно взять сферу для усиления (привет D3), у лёгких классов может быть щиток, ну и понятно, что у тяжёлых больших щитов.
Помимо идеи разделения на подкатегории предметов было решено просчитать соотношение различных параметров. Для этого даже была простроена таблица с различной экипировкой, которая была разбита по грейдам, по аналогии с той же LineAge шесть категорий: NG (no grade), D, C, B, A и S Grade. В сумме получилось 1692 предмета экипировки и 462 предмета оружия всех видов. И это ещё сюда не входили раритетные предметы! Я с ужасом представляю количество графики для хотя бы для отображения разных иконок в инвентаре.
Несмотря на то, что выходило достаточно интересно, меня ждала суровая реальность ограничений редактора (а может и самого движка RPG Maker MV). После изучения параметров некоторых игр и составления графиков роста зависимостей их параметров, у меня получилась некоторая своя формула и результаты в виде таблички excel. И какого же было моё разочарование узнав, что в RPG Maker MV есть ограничение на максимально возможные числа, а именно любой параметр не может быть больше 500 единиц, а денежная сумма не может быть больше ОДНОГО миллиона. Редактор тупо округляет любое введённое большее число до этих максимумов.
В общем, не долго музыка играл, не долго пел аккордеон. Надо придумывать что-то другое, строить характеристики исходя из этих ограничений, самая крутая «пушка» с 500 уроном, самый крутой щит с 500 защитой и всё это не дороже 1кк. Ещё не известно, что насчёт других характеристик, но думаю там тоже не всё так просто.
В любом случае вопрос пока остался открытым, есть примерные графики для расчёта зависимостей. Даже было предложено делать не прямую зависимость, а с некоторым уклоном. В общем фантазии есть где ещё разгуляться. А у с учётом того, что она у меня бурная и не стоит постоянно на месте, то хоть и с трудом, но приходится отказываться от многих вещей, ну или хотя бы откладывать в ящик, записывая на будущее.
Так вот ещё одной из таких сумасшедших идей была идея ввести систему подгрупп для стихий: Хаос, Жизнь, Порядок и Смерть. На рисунке они не зря расположены друг на против друга и как бы являются разными сторонами одной медали: группа «Хаос — Порядок», и группа «Жизнь — Смерть».
Была задумка немного изменить баланс и силу навыков (заклинаний) в зависимости от предпочтений игрока. Изначально персонаж имеет нейтралитет в всех этих группах, и все они условно равны единице. Далее своими поступками (диалогами) герой может выбирать в какую ему сторону двигаться к хаосу или порядку, к смерти или к жизни.
При дальнейшем расчёте эффективности навыка или заклинания это будет учитываться. То есть реальную силу навыка (или заклинания) умножаем на единицу группы и получаем конечный результат. Однако при перекосе в одну из сторон, например, в сторону хаоса, эта подгруппа = 1.1, соответственно подгруппа порядка становится 0.9 и логично предположить, что навыки из подгруппы хаоса будут иметь больший эффект. То же самое справедливо и для подгруппы «Жизнь — Смерть».
Таким образом у нас персонаж может быть четырёх смешанных подтипов:
- Хаосит несущий смерть,
- Хаосит поборник жизни,
- Адепт порядка с уклоном в жизнь,
- Либо Адепт с уклоном к смерти.
В зависимости от этого будут и уникальные навыки (заклинания). И противостоять, например, «Багровому пламени» (Хаос + Смерть) равносильно сможет лишь какой-нибудь противоположный персонаж, например, паладин порядка с уклоном в жизнь.
По поводу спутников, изначально планировалось сделать у них какой-нибудь заданный тип. А вот менять (если игроку захочется) усилить или наоборот направить «на путь истинный», можно будет с помощью специальных квестов (заданий), посещением непростых мест или «впечатлив» спутника, подарив ему какой-либо артефакт.
Помимо графики и «безумных» идей писались ещё плагины для этих самых идей. Один из таких плагинов мы разрабатывали совместно с Чёрным котом (он же פליקס כץ) плагин для вибрации геймпада. Ранее в VX Ace это было сделать относительно не сложно, достаточно было «подключить» на ruby библиотеку «xinput1_3.dll» и уже через API управлять моторчиками. В javascript, к сожалению, так не сделать. Несмотря на то, что вроде как в JavaScript есть встроенный функционал опроса и управления геймпадом, на практике же оказалось, что vibration принимает почему-то только одно значение и не о какой паре моторчиков и речи быть не может. Кроме того, изменение значений тоже не дало никакого результата.
Тогда Котик предложил интересный вариант. Поскольку RPG Maker MV использует своего рода недобраузер NW.JS, то написать модуль, который будет управлять вибрацией геймпада с помощью той же «xinput1_3.dll», а он в свою очередь будет слушать управляющие команды из JavaScript. Модуль получился на славу и геймпад действительно вибрировал, причём можно было управлять раздельно двумя моторчиками. Единственный минус, сложность сборки самого модуля для NW.JS, при выходе новой версии.
Но не все плагины были как говорится «вылизаны», многие так и остались в тестовом статусе. Уж не знаю к счастью или не очень, но после обновления RPG Maker MV до версии 1.5, а затем и до 1.6 многое в движке поменялось и многие, ранее написанные, плагины либо не совсем корректно стали работать, либо вовсе падали.
Как говаривали древние, скоро сказка сказывается, да не скоро дело делается. Чем больше у меня получалось придумать новых «фишек», тем всё меньше мне нравилась общая концепция графики и сцен в целом. Несмотря на то, что много чего было перерисовано, улучшено и максимально отдалено от стандартного RPT, мне всё так же не нравилась угловатость. А если быть точнее, то привязка к сетке (тайлам).
Когда-то давным давно, возможно такие ограничения и были оправданы, компьютеры были большими и медленными, памяти мало, а на графику и вовсе обращали внимание в последнюю очередь. На сегодняшний день большинство игр, как говорится оказуалились, их встречают по одёжке и уже потом смотрят, а что собственно внутри фантика?
И эта идея мне всё не давала покоя. В результате чего мне пришла очередная сумасшедшая идея, очередной раз переделать всю графику. А именно вместо привычной расстановки одинаковых кусочков (тайлов), использовать так называемый параллакс-маппинг. Это когда рисуется фоновая картинка (подложка) а с помощью тайлов указываются места для проходимости персонажей.
Этой сумасшедший шаг выбил меня из колеи более чем на год. Это был очень трудный период. Под это дело был написан специальный плагин, который позволял не просто разместить подложку (картинку), а сделать их несколько, на разных уровнях. В результате чего стало возможным реализовать ещё одну давнюю задумку: возможность персонажу проходить как-бы за предметами, при этом сам он становился полупрозрачным. Так же было написано ещё пару плагинов, позволяющих реализовать полноценную многокадровую анимацию.
Была выбрана достаточно крупная карта, а именно сама «Кошачья деревня», что в купе составило порядка 2976x2256 точек. В photoshop было несколько сотен слоёв, которые приходилось по мере прорисовки части карты объединять и сохранять как новый файл, иначе система начинала жутко тормозить из-за нехватки памяти. Да, результат получился почти удовлетворительным. Почти потому что есть ещё много чего доработать, некоторые ляпы с тенями и так по мелочи.
В сообществе google+ мы так же поднимали вопросы о названии проекта «Приключения Нэки». Кто-то считал это звучит несколько заезжено, другие что слишком по-детски, третьи и вовсе считали, что аниме тематика и непонятное слово «Нэка» может составить предвзятое отношение к проекту.
Так или иначе проект пока называется «One Neko Story» (История одной кошки). Как он будет называется дальше покажет время, а пока пусть будет рабочий вариант. На этом вводную часть можно считать законченным и перейти непосредственно к посту с версией 0.00 pre-alpha.